

/*3. 利用反射和重载完成以下功能
        1)创建Student类，类中有属性name和age并封装属性
        2)重载Student的构造函数，一个是无参构造并，另一个是带两个参数的有参构造，要求在构造函数打印提示信息
        3)创建带main函数的NewInstanceTest类，利用Class类得到Student对象
        4)通过上述获取的Class对象分别调用Student有参函数和无参函数

 */

package refelct;

import refelct.Student;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;


public class NewInstanceTest {
    public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        Class<Student>s=Student.class;//利用class属性获得student对象
        Constructor<Student> s1=s.getDeclaredConstructor(String.class, Integer.class);//获得student有参构造函数
        Constructor<Student> s2=s.getConstructor();//获得student无参构造函数
        s1.setAccessible(true);//值为true，取消访问检查
        s2.setAccessible(true);
        Object obj=s2.newInstance();
        Object obj1=s1.newInstance("魈",2000);
        System.out.println(obj);
        System.out.println(obj1);



    }
}
